FB a NOT NULL sloupec

Otázka od: Lebeda David

12. 12. 2003 10:13

Ahoj,

mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
malo. Sloupec pak v IBConsoli ma uvedeno, ze Allows NULLs, ale
pri pokusu updatovat hodnotu na NULL vyskoci validation error na
hodnote NULL. Neboli patrne ta informace lezi i jinde nez jen v
nejakem flagu.

FB 1.02

Diky

David Lebeda

Odpovedá: Jirka

12. 12. 2003 10:39

Ahoj,
odstranit a znova pridat.

Jirka
> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je



Odpovedá: Libor Junek, Medisoft International

12. 12. 2003 10:37

Musis udelat Backup/Restore a pak to poslape.
Libor

----- Original Message -----
From: "Lebeda David" <david.lebeda@comarr.cz>
Sent: Friday, December 12, 2003 9:54 AM


> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
> malo. Sloupec pak v IBConsoli ma uvedeno, ze Allows NULLs, ale
> pri pokusu updatovat hodnotu na NULL vyskoci validation error na
> hodnote NULL. Neboli patrne ta informace lezi i jinde nez jen v
> nejakem flagu.
>
> David Lebeda


Odpovedá: Lebeda David

12. 12. 2003 10:38

> odstranit a znova pridat.

Aha, zapomnel jsem napsat, ze se chci vyhnout nutnosti pritom
povypinat par desitek triggeru, view a procedur, v nichz ten sloupec
figuruje, takze reseni jako sloupec vymazat a jim podobna jsou az
nouzova reseni. Radeji bych nasel cestu jen prostrednictvim editace
sloupce.

David Lebeda

> > mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> > ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> > upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je


Odpovedá: petr palicka

12. 12. 2003 10:51

ahoj,

   ja to s uspechem resil takto:

update rdb$relation_fields
set
   rdb$null_flag = null
where
   rdb$field_name = 'DATUM' or
   rdb$field_name = 'DATNAR'

takze vsechna pole DATUM a DATNAR v databazi
povoli nul hodnoty, prestoze puvodne byla
definovana jako NOT NULL. pripadne po novem
pripojeni.

peca


Odpovedá: Lebeda David

12. 12. 2003 11:08

> ja to s uspechem resil takto:
>
> update rdb$relation_fields
> set
> rdb$null_flag = null
> where
> rdb$field_name = 'DATUM' or
> rdb$field_name = 'DATNAR'
>
> takze vsechna pole DATUM a DATNAR v databazi
> povoli nul hodnoty, prestoze puvodne byla
> definovana jako NOT NULL. pripadne po novem
> pripojeni.

Ahoj,

zkusil jsem, ale nepomohlo to. Mozna je dulezite jeste vedet, ze field ma
domenu
(typ integer, default NULL), ale ta NOT NULL nepozaduje. Zkusil jsem i nove
pripojeni k databazi, ale nepomohlo.

David Lebeda

Odpovedá: Pavel Cisar

12. 12. 2003 11:31

Haj hou!

On 12 Dec 2003 at 9:54, Lebeda David wrote:

> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil ukladat
> NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho upravit?
> IBExpert nekde manipuluje s nejakym flagem, ale to je malo. Sloupec
> pak v IBConsoli ma uvedeno, ze Allows NULLs, ale pri pokusu updatovat
> hodnotu na NULL vyskoci validation error na hodnote NULL. Neboli
> patrne ta informace lezi i jinde nez jen v nejakem flagu.

Bohuzel, tohle se musi promyslet dopredu   FB neumoznuje zmenit NOT
NULL na NULLABLE. IBExpert sice muze cachrovat se systemovymi
tabulkami, ale v podstate to problem neresi. Pokud mi pamet dobre
slouzi, tak po takove low-level zmene je stejne nutne provest
zalohu/obnovu, aby to melo skutecny efekt, a upravena tabulka by
rozhodne nemela obsahovat data (jinak muze obnova selhat).

Nejoptimalnejsi postup je pouzivat domeny. NOT NULL definovat jen u
takovych, kde to pravdu bude vzdy bez NULL. Pokud to muze byt tak i
tak, tak se NOT NULL definuje az na sloupci. Situace do ktere jsi se
dostal pak lze resit "vymenou" domeny.

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase